Node.js এর http মডিউল ব্যবহার করে খুব সহজেই একটি HTTP সার্ভার তৈরি করা যায়। এটি একটি ওয়েব সার্ভার তৈরি করতে ব্যবহৃত হয়, যেটি HTTP রিকোয়েস্ট গ্রহণ করতে পারে এবং HTTP রেসপন্স পাঠাতে পারে।
Node.js এ HTTP সার্ভার তৈরি করতে, আপনাকে http.createServer() মেথড ব্যবহার করতে হবে। এই মেথডটি একটি সার্ভার ইনস্ট্যান্স তৈরি করে, যা বিভিন্ন ইভেন্ট এবং রিকোয়েস্ট হ্যান্ডল করতে সক্ষম।
১. বেসিক HTTP সার্ভার তৈরি করা
নিচে একটি সিম্পল HTTP সার্ভারের উদাহরণ দেওয়া হলো:
// http মডিউল ইনপুট করা
const http = require('http');
// সার্ভার তৈরি করা
const server = http.createServer((req, res) => {
// রেসপন্স হেডার সেট করা
res.writeHead(200, { 'Content-Type': 'text/plain' });
// রেসপন্স পাঠানো
res.end('Hello, World!');
});
// সার্ভার 3000 পোর্টে লিসেন করা
server.listen(3000, 'localhost', () => {
console.log('Server running at http://localhost:3000/');
});ব্যাখ্যা:
http.createServer(): এটি একটি ফাংশন যা একটি সার্ভার তৈরি করে। এখানেreq(request) এবংres(response) দুটি অবজেক্ট দেওয়া হয়, যেখানেreqরিকোয়েস্টের ডেটা ধারণ করে এবংresরেসপন্স পাঠানোর জন্য ব্যবহৃত হয়।res.writeHead(200, { 'Content-Type': 'text/plain' }): এটি HTTP রেসপন্সের হেডার সেট করে।200HTTP স্ট্যাটাস কোড (অর্থাৎ রিকোয়েস্ট সফল) এবংContent-Typeহেডার সেট করা হয়েছে যেটি প্লেইন টেক্সট হিসেবে রেসপন্স দেবে।res.end('Hello, World!'): এটি রেসপন্স প্রেরণ করে এবং সার্ভারকে বন্ধ করে দেয়।server.listen(3000, 'localhost'): এটি সার্ভারকে 3000 পোর্টেlocalhostএ লিসেন করতে বলে, যার ফলে আপনিhttp://localhost:3000/URL এ গিয়ে সার্ভারের রেসপন্স দেখতে পারবেন।
২. GET রিকোয়েস্ট হ্যান্ডলিং
HTTP সার্ভারটি GET রিকোয়েস্ট গ্রহণ করতে এবং রেসপন্স দিতে পারে। আমরা GET রিকোয়েস্টে URL অনুসারে বিভিন্ন রেসপন্স দিতে পারি।
const http = require('http');
const server = http.createServer((req, res) => {
// রিকোয়েস্টের URL চেক করা
if (req.url === '/') {
res.writeHead(200, { 'Content-Type': 'text/html' });
res.end('<h1>Welcome to the Home Page!</h1>');
} else if (req.url === '/about') {
res.writeHead(200, { 'Content-Type': 'text/html' });
res.end('<h1>About Us</h1>');
} else {
res.writeHead(404, { 'Content-Type': 'text/html' });
res.end('<h1>Page Not Found</h1>');
}
});
server.listen(3000, 'localhost', () => {
console.log('Server running at http://localhost:3000/');
});ব্যাখ্যা:
req.url: এটি রিকোয়েস্টের URL পাথ ধারণ করে। আমরা এর মাধ্যমে নির্দিষ্ট পৃষ্ঠার জন্য রেসপন্স দিতে পারি।res.writeHead(): HTTP স্ট্যাটাস কোড এবং কনটেন্ট টাইপ সেট করার জন্য ব্যবহৃত হয়।- URL পাথ অনুযায়ী রেসপন্স:
- যদি রিকোয়েস্টের URL
/হয়, তাহলে "Welcome to the Home Page!" দেখানো হবে। - যদি URL
/aboutহয়, তাহলে "About Us" দেখানো হবে। - অন্য কোনো URL হলে "Page Not Found" দেখানো হবে।
- যদি রিকোয়েস্টের URL
৩. POST রিকোয়েস্ট হ্যান্ডলিং
HTTP POST রিকোয়েস্ট হ্যান্ডল করার জন্য সাধারণত ইউজার ফর্ম ডেটা বা JSON ডেটা গ্রহণ করা হয়। এখানে একটি POST রিকোয়েস্ট হ্যান্ডল করার উদাহরণ দেওয়া হলো:
const http = require('http');
const fs = require('fs');
const querystring = require('querystring');
const server = http.createServer((req, res) => {
if (req.method === 'POST' && req.url === '/submit') {
let body = '';
req.on('data', chunk => {
body += chunk;
});
req.on('end', () => {
const parsedData = querystring.parse(body);
console.log(parsedData); // POST ডেটা কনসোলে প্রিন্ট হবে
res.writeHead(200, { 'Content-Type': 'text/html' });
res.end('<h1>Form Submitted Successfully</h1>');
});
} else {
res.writeHead(404, { 'Content-Type': 'text/html' });
res.end('<h1>Page Not Found</h1>');
}
});
server.listen(3000, 'localhost', () => {
console.log('Server running at http://localhost:3000/');
});ব্যাখ্যা:
- POST রিকোয়েস্ট: এখানে
req.method === 'POST'দিয়ে আমরা POST রিকোয়েস্ট চেক করি, এবং যখন ইউজার ফর্ম সাবমিট করে, তখন এই রিকোয়েস্টটি গ্রহণ করা হয়। req.on('data'): এটি POST ডেটা গ্রহণের জন্য ব্যবহৃত হয়। ডেটা পেতেdataইভেন্টটি ব্যবহার করা হয় এবংendইভেন্টে আমরা পুরো ডেটা প্রক্রিয়া করি।querystring.parse(body): POST ডেটাকে পার্স করার জন্যquerystringমডিউল ব্যবহার করা হয়েছে, যাx-www-form-urlencodedফর্ম ডেটা পার্স করে।
৪. HTTP সার্ভারে JSON রেসপন্স
Node.js HTTP সার্ভারে JSON রেসপন্স পাঠানোর জন্য নিম্নলিখিত কোড ব্যবহার করা যেতে পারে:
const http = require('http');
const server = http.createServer((req, res) => {
if (req.url === '/data') {
const responseData = { message: 'Hello, this is JSON data!' };
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(JSON.stringify(responseData));
} else {
res.writeHead(404, { 'Content-Type': 'text/html' });
res.end('<h1>Page Not Found</h1>');
}
});
server.listen(3000, 'localhost', () => {
console.log('Server running at http://localhost:3000/');
});ব্যাখ্যা:
- JSON রেসপন্স: এখানে
/dataURL এ JSON ডেটা রেসপন্স হিসেবে পাঠানো হচ্ছে।JSON.stringify(responseData)ব্যবহার করে অবজেক্টকে JSON স্ট্রিং এ রূপান্তরিত করা হচ্ছে। Content-Type: application/json: রেসপন্স হেডারেContent-Typeহিসেবেapplication/jsonসেট করা হচ্ছে, যাতে ক্লায়েন্ট জানে যে এটি একটি JSON ডেটা।
সারাংশ
Node.js এ HTTP সার্ভার তৈরি করা খুবই সহজ এবং কার্যকরী। আপনি http.createServer() মেথড ব্যবহার করে সার্ভার তৈরি করতে পারেন এবং তার মাধ্যমে GET, POST, এবং অন্যান্য HTTP রিকোয়েস্ট হ্যান্ডল করতে পারেন। সার্ভারের মাধ্যমে আপনি JSON রেসপন্স, ফর্ম ডেটা গ্রহণ, এবং অন্যান্য কার্যকলাপ পরিচালনা করতে পারেন।